import { Component, OnInit } from '@angular/core';
import { JsonApiService } from "app/core/api/json-api.service"; //http请求配置引入
import {config} from '../../../shared/smartadmin.config';

declare var $: any;
@Component({
	selector: 'sa-car-sum',
	templateUrl: './car-sum.component.html',
})
export class CarSumComponent implements OnInit {
	tableData:any[] = []; //table数据
	totalCount:number = 0; //分页总条数
	curPage:number = 1; //分页当前页
	pageSize:number = 10; //内置的分页每页条数
	carList:any[] = []; //车辆数据集合
	deviceId:string = '';//设备ID
	carNumber:string|number = '';	//车牌号
	startTime:string = '';//开始时间
	endTime:string = '';	//结束时间
	
	constructor(private jsonApiService: JsonApiService) {}
	//刷新
	refresh(){
		this.load();
	}
	ngOnInit() {
		this.initCarTree();
		this.initDate().then(()=>this.load());//初始化日期,加载table表格数据		
	}
	ngOnDestroy(){
		document.onclick = null;
	}
	//导出汇总
	export_totle(){
		this.startTime =  $('#datetimepicker1').val();
		this.endTime =  $('#datetimepicker2').val();
		// if(!this.startTime||!this.endTime){
		// 	this.jsonApiService.message('请选择导出报表时间范围');
		// 	return
		// }
		var temdate = new Date();
		var nowTime = temdate.getTime().toString();
		var parameters = {
			deviceId:this.deviceId,
			startTime:this.startTime,
			endTime:this.endTime
		};
		let timeCheck=common.correctTime(parameters);
		if(!timeCheck.status){
			this.jsonApiService.message(timeCheck.message);
			return;
		}
		common.exprotDataFile(parameters, 'param', config.BaseURL + 'summary/wegithAllByCarExportExcel.html')
	}
	getTime(date){
		var year = date.getFullYear();
		var month = (date.getMonth() + 1) < 10 ? "0" + (date.getMonth() + 1) : (date.getMonth() + 1);
		var day = date.getDate()  < 10 ? "0" + date.getDate() : date.getDate();
		return year+"-"+month+"-"+day;
	}
	//初始化日期
	initDate(){
		var that = this;
		return new Promise(function (resolve, reject) {
			System.import('assets/js/datepicker/js/bootstrap-datetimepicker.min.js').then(()=>{
					System.import('assets/js/datepicker/locales/bootstrap-datetimepicker.zh-CN.js').then(()=>{
						$("#datetimepicker1").datetimepicker({//时间插件
							format: "yyyy-mm-dd",
						    language: "zh-CN",
						    autoclose: true,
						    minView : 2
						}).on("changeDate", function(e){
							var date = e.date;
							var time = that.getTime(date);
							$("#datetimepicker2").datetimepicker("setStartDate", time);
						});
						$("#datetimepicker2").datetimepicker({//时间插件
							format: "yyyy-mm-dd",
						    language: "zh-CN",
						    autoclose: true,
						    minView : 2
						}).on("changeDate", function(e){
							var date = e.date;
							var time = that.getTime(date);
							$("#datetimepicker1").datetimepicker("setEndDate", time);
						});
						var date = new Date();
						$("#datetimepicker2").val(that.getTime(date));//当前时间
						date.setDate(date.getDate() - 7);//设置前一周
						$("#datetimepicker1").val(that.getTime(date));
						resolve();
					});
				}
			);
		})
	}	
	//查询
	search_data(){
		this.curPage = 1;
		this.load();
	}
	//加载list数据
	load() {
		this.startTime =  $('#datetimepicker1').val();
		this.endTime =  $('#datetimepicker2').val();
		if(this.startTime==''||this.endTime==''){
			this.jsonApiService.message("起始结束时间不能为空");
			return;
		}
		let timeCheck=common.correctTimeParams(this.startTime,this.endTime,0);
		if(!timeCheck.status){
			this.jsonApiService.message(timeCheck.message);
			return;
		}
		let reqdata = 'gridPager={"pageSize":' + this.pageSize + ',"nowPage":' + this.curPage + ',"parameters":{"deviceId":"'+this.deviceId+'","startTime":"'+this.startTime+'","endTime":"'+this.endTime+'"}}'
		this.jsonApiService.http("summary/summaryWeightAllByCar.html", reqdata).subscribe(data => {
			if(data.isSuccess){
				this.tableData = data.exhibitDatas;
				this.totalCount = data.recordCount;
			}
		})
	}
	del_date(){
		this.startTime = '';
		this.endTime ='';
		$("#datetimepicker1").val('').change();
		$("#datetimepicker2").val('').change();
		$("#datetimepicker2").datetimepicker("setStartDate", null);
		$("#datetimepicker1").datetimepicker("setEndDate", null);
	}
	//分页回调
	paginate(e){
		this.curPage = e.page+1;
		this.pageSize = e.rows;
		this.load();
	}
	//初始化车辆
    initCarTree() {
        System.import('script-loader!select2/dist/js/select2.min.js').then(() => {
            System.import('assets/js/select2-zh-CN.js').then(() => {
                var that = this;
                $("#carNumberSelect2").select2({
                    language: "zh-CN",
                    placeholder: "请选择",
                    minimumInputLength: 2,      //最少2个字符，select2才显示查询的内容
                    ajax: {
                        url: config.BaseURL + "stats/carListByCarNumber.html",
                        dataType: 'json',
                        delay: 50,
                        method: "POST",
                        xhrFields: { withCredentials: true },
                        data: function (params) {
                            return {
                                "carNumber": params.term // search term
                            };
                        },
                        processResults: function(data, params) {
							var options = new Array();
							// 小于10个数量才判断重复
							if(data.data.length<=10){
								let arr = []
								let sameCar = []
								// 判断相同的车牌号
								for (let index = 0; index < data.data.length; index++) {
									let car = data.data[index];
									if(arr.indexOf(car.carNumber)!=-1){
										sameCar.push(car.carNumber)
									}else{
										arr.push(car.carNumber);
									}
								}
								$(data.data).each(function(index, car) {
									if(sameCar.indexOf(car.carNumber)!=-1){
										options.push({
											id: car.deviceId,
											text: car.carNumber+"["+car.parentName+"]"
										})
									}else{
										options.push({
											id: car.deviceId,
											text: car.carNumber
										})
									}
								});
							}else{
								$(data.data).each(function(index, car) {
									options.push({
										id: car.deviceId,
										text: car.carNumber
									})
								});
							}
							return {
								results: options //获取查询后的结果
							};
						},
                        cache: true
                    },
                    templateResult: this.formatRepo
                }).on("select2:select", function (e) {
                    var data = e.params.data;
                    that.deviceId = data.id;
                    if(data.text.indexOf('[') > 0){
						that.carNumber = data.text.split('[')[0];
					} else {
						that.carNumber = data.text;
					}
                });
            })
        })
	}
	//select2 格式回调函数
    formatRepo(state) {
        if (!state.id) { return state.text };
        var $state = $('<span><i class="fa fa-car green"></i>&nbsp;&nbsp;' + state.text + '</span>');
        return $state;
	}
	//清除车辆选中值
    del_carNumber() {
        this.deviceId = '';
        this.carNumber = '';
        var str = $("<span class='select2-selection__placeholder'>请选择</span>");
        $('#carNumberSelect2').val("");
        $("#select2-carNumberSelect2-container").empty();
        $("#select2-carNumberSelect2-container").attr("title", "");
        $("#select2-carNumberSelect2-container").prepend(str);
    }
}